package org.itzixi.adapter;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;

public interface StorageAdapter {
    /**
     * 创建存储桶
     *
     * @param bucket 存储桶名称
     */
    void createBucket(String bucket);

    /**
     * 上传文件
     *
     * @param multipartFile 文件流
     * @param objectName  对象名称
     */
    void uploadFile(MultipartFile multipartFile,  String objectName) throws Exception;

    /**
     * 上传文件
     *
     * @param multipartFile 文件流
     * @param objectName  对象名称
     */
    String uploadFileAndReturnUrl(MultipartFile multipartFile,  String objectName) throws Exception;

    /**
     * 获取所有存储桶
     *
     * @return 存储桶名称集合
     */
    List<String> getAllBuckets();

    /**
     * 获取存储桶下所有文件
     *
     * @param bucket 存储桶名称
     * @return 文件信息集合
     */
//    List<FileInfo> getAllFiles(String bucket);

    /**
     * 下载文件
     *
     * @param bucket     存储桶名称
     * @param objectName 对象名称
     * @return 文件流
     */
    InputStream download(String bucket, String objectName);

    /**
     * 删除存储桶
     *
     * @param bucket 存储桶名称
     */
    void deleteBucket(String bucket);

    /**
     * 删除文件
     *
     * @param bucket     存储桶名称
     * @param objectName 对象名称
     */
    void deleteObject(String bucket, String objectName);

    String getUrl(String objectName);

    String uploadFile(String objectName,
                      String fileName, boolean needUrl) throws Exception;


    String uploadFile(String objectName, InputStream is, boolean needUrl) throws Exception;



}
